gemeenten_shapefile = 'gadm41_NLD_1.shp'
gdf = gpd.read_file(gemeenten_shapefile)
gdf = gdf[~gdf['NAME_1'].isin(['Zeeuwse meren', 'IJsselmeer'])]
gdf.loc[gdf['NAME_1'] == 'Fryslân', 'NAME_1'] = 'Friesland'
gdf.loc[gdf['NAME_1'] == 'NA', 'NAME_1'] = 'Zuid-Holland'
dataset = pd.read_csv('inkomen_van_personen_gemeente.csv', sep=',', thousands='.')[0:12]
dataset['Mediaan persoonlijk inkomen'] = dataset['Mediaan persoonlijk inkomen'].str.replace(',', '.').astype(float)
merged = gdf.merge(dataset, how='left', left_on='NAME_1', right_on='Regio\'s')
counties_geojson = merged.__geo_interface__
fig = go.Figure(go.Choroplethmapbox(
geojson=counties_geojson,
locations=merged.index,
z=merged['Mediaan persoonlijk inkomen'],
colorscale='reds',
zmin=merged['Mediaan persoonlijk inkomen'].min(),
zmax=merged['Mediaan persoonlijk inkomen'].max(),
marker_opacity=0.5,
marker_line_width=1.5,
hovertemplate='<b>%{properties.NAME_1}</b><br>' +
'Mediaan inkomen: %{z:.2f} (x1,000€) <extra></extra>',
))
fig.update_layout(
mapbox_style="carto-positron",
mapbox_zoom=6,
mapbox_center={"lat": 52.1326, "lon": 5.2913},
margin={"r": 150, "t": 100, "l": 100, "b": 50},
title={
'text': 'Mediaan persoonlijk inkomen in Nederlandse provincies in duizenden euro\'s',
'x': 0.5,
'xanchor': 'center',
'yanchor': 'top',
'font': dict(size=18)
},
coloraxis_colorbar=dict(
title='Mediaan persoonlijk inkomen (€)',
ticksuffix=' €',
),
width=750,
height=800,
paper_bgcolor='#fbf2e2',
plot_bgcolor='#fbf2e2'
)
fig.show()